import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

public class LiczbaTest2 {
	
	@Ignore
	@Test
	public void testZero()
	{
		Liczba a = new Liczba(0);
		assertNotNull(a);
		assertEquals("0", a.zapis(2));
		assertEquals("0", a.zapis(10));
		assertEquals("0", a.zapis(16));
	}
	
	@Test
	public void testSixteenBase()
	{
		Liczba a;
		a = new Liczba(255);
		assertNotNull(a);
		assertFalse(!"ff".equals(a.zapis(16)));
		a = new Liczba(10);
		assertNotNull(a);
		assertTrue("a".equals(a.zapis(16)));
	}
	
	@Test
	public void testTenBase()
	{
		Liczba a;
		a = new Liczba(10);
		assertNotNull(a);
		assertEquals("10", a.zapis(10));
		a = new Liczba(100);
		assertNotNull(a);
		assertEquals("100", a.zapis(10));
	}
	
	@Test
	public void testReading()
	{
		Liczba a;
		a = new Liczba("10", 10);
		assertEquals("10", a.zapis(10));
		a = new Liczba("9", 10);
		assertEquals("9", a.zapis(10));
		a = new Liczba("222", 3);
		assertEquals("26", a.zapis(10));
		a = new Liczba("700", 8);
		assertEquals("448", a.zapis(10));
		a = new Liczba("FF", 16);
		assertEquals("255", a.zapis(10));
	}
	
	@Test(expected = LiczbaException.class)
	public void testExceptions2()
	{
		Liczba a;
		a = new Liczba("FAFDA", 2);
	}
	
	@Test
	@Ignore
	public void testExceptions()
	{
		Liczba a;
		try {
			a = new Liczba("FAFDA", 2);
			fail("Powinno rzucić wyjątek - nieprawidłowe znaki w liczbnie o tej podstawie");
		}
		catch(LiczbaException e)
		{			
		}
		catch(Exception e)
		{
			fail("Powinno rzucić wyjątek - nieprawidłowe znaki w liczbnie o tej podstawie");
		}
		

		try {
			a = new Liczba("11", 0);
			fail("Powinno rzucić wyjątek - nieprawidłowa podstawa");
		}
		catch(LiczbaException e)
		{			
		}
		catch(Exception e)
		{
			fail("Powinno rzucić wyjątek - nieprawidłowe podstawa");
		}
		
		try {
			a = new Liczba("11", 20);
			fail("Powinno rzucić wyjątek - nieprawidłowa podstawa");
		}
		catch(LiczbaException e)
		{			
		}
		catch(Exception e)
		{
			fail("Powinno rzucić wyjątek - nieprawidłowe podstawa");
		}
		
		try {
			a = new Liczba("11", 2);
			a.zapis(20);
			fail("Powinno rzucić wyjątek - nieprawidłowa podstawa");
		}
		catch(LiczbaException e)
		{			
		}
		catch(Exception e)
		{
			fail("Powinno rzucić wyjątek - nieprawidłowe podstawa");
		}
		
		try {
			a = new Liczba("11", 2);
			a.zapis(1);
			fail("Powinno rzucić wyjątek - nieprawidłowa podstawa");
		}
		catch(LiczbaException e)
		{			
		}
		catch(Exception e)
		{
			fail("Powinno rzucić wyjątek - nieprawidłowe podstawa");
		}
	}
	
	@Before
	public void Start()
	{
		System.out.println("I don't really need this");
	}
	
	@After
	public void End()
	{
		System.out.println("I don't really need this");
	}
}
